; display specific definitions follow. You will need to add to these to 
; configure for unsupported display controllers.

	 ; default generic graphics. USE THESE AS "TEMPLATES"
gmode_test macro isgraphic
	; This macro is to jump if display is in an EGA/VGA 16 color 
	; "compatible" mode -- this means one which is a simple extension
	; (more rows and/or columns) than modes 10h or 12h. At minimum
	; modes 10h and 12h themselves qualify.
	; No registers may be altered.
	; Byte location "cs:video_mode" is a copy of byte 40:49H.
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
endm
gmode_code macro
	; this macro is used to tell if display is in graphics
	; mode by looking at the byte 40:49H, which is in
	; register AL at the start of the macro.
	; It is to set location cs:gmode_flag non-zero if in a graphics mode.
	; Value of 7 is reserved for the monochrome adapter.
	; No registers may be altered.
	; *NOTE* users of Paradise and possibly other VGA
	; cards will need to modifify this routine because
	; Paradise extended character modes set this byte to
	; to the value of the mode you selected.  Nicer cards
	; (Genoa and VEGA, that I know of) leave this byte at
	; "3" and all works fine!
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes =>4 are assumed to be graphic
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm

IF PARA480
; From Arend van den Brug
card_id	macro
	db	'Paradise EGA 480'
endm

gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 50h	; 640x480, 16 color EGA mode
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes =>4 are assumed to be graphic
	cmp	al, 51h			; 51: 80x30 text 16 colors 
	je	not_graphics
	cmp	al, 54h			; 54: 132x43 text 16 colors 
	je	not_graphics
	cmp	al, 55h			; 55: 132x25 text 16 colors 
	je	not_graphics
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF

IF PARADISE
card_id macro
	db	'Paradise VGA'
endm
gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
	cmp	cs:video_mode, 58h	; 800x600, 16 color
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes =>4 are assumed to be graphic
	cmp	al, 54h			; modes 54 and 55 are text!
	je	not_graphics
	cmp	al, 55h
	je	not_graphics
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF

IF TSENG4000
card_id	macro
	db	'TSENG LABS 4000'
endm

gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
	cmp	cs:video_mode, 29h	; 800x600, 16 color
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes =>4 are assumed to be graphic
	cmp	al, 22h			; 132x44, 25, 28
	jb	is_graphics
	cmp	al, 24h
	jbe	not_graphics
	cmp	al, 26h			; 80x60
	je	not_graphics
	cmp	al, 2Ah			; 100x40
	je	not_graphics
is_graphics:
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF


IF ATT600
card_id macro
	db	'AT&T VDC600'
endm
gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
	cmp	cs:video_mode, 47h	; 800x600, 16 color
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes >=4 are assumed to be graphic
	cmp	al, 54h			; modes 54 and 55 are text!
	je	not_graphics
	cmp	al, 55h
	je	not_graphics
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF

IF STBVGA
card_id	macro
	db	'STB VGA Extra'
endm
gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes >=4 are assumed to be graphic
	cmp	al, 22h			; modes 22 and 23 are text!
	je	not_graphics
	cmp	al, 23h
	je	not_graphics
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF

IF TVGA16
card_id	macro
	db	'Tatung VGA-16'
endm
gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes >=4 are assumed to be graphic
	cmp	al, 56h			; modes 56 and 57 are text!
	jb	not_graphics
	cmp	al, 57h
	jb	not_graphics
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF


IF	VEGA
card_id	macro
	db	'Video-Seven/Headland VGA'
endm
gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
	cmp	cs:video_mode, 14h	; 752x410
	je	isgraphic
	cmp	cs:video_mode, 15h	; 720x540
	je	isgraphic
	cmp	cs:video_mode, 16h	; 800x600
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes >=4 are assumed to be graphic
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF


IF	EGAWIZ
card_id	macro
	db	'EGA Wizard Deluxe'
endm
gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
	cmp	cs:video_mode, 26h	; 640x480, 60 line
	je	isgraphic
	cmp	cs:video_mode, 70h	; 740x396
	je	isgraphic
	cmp	cs:video_mode, 71h	; 800x600
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes >=4 are assumed to be graphic
	cmp	al, 22h			; 22-24 are nongraphic
	jb	is_graphics
	cmp	al, 24h
	jbe	not_graphics
	cmp	al, 32h			; 32-34 are nongraphic
	jb	is_graphics
	cmp	al, 34h
	jbe	not_graphics
	cmp	al, 38h			; 38 is nongraphic
	je	not_graphics
is_graphics:
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF

IF TridentVGA
card_id	macro
	db	'Trident VGA'
endm
; contributed by Nadav Horesh  CFNADAV%WEIZMANN.BITNET@CUNYVM.CUNY.EDU
gmode_test macro isgraphic
        cmp     cs:video_mode, 10h      ; 640x350, 16 color mode
        je      isgraphic
        cmp     cs:video_mode, 12h      ; 640x480, 16 color VGA mode
        je      isgraphic
        cmp     cs:video_mode, 5bh      ; 800x600, 16 color TVGA mode
        je      isgraphic
        cmp     cs:video_mode, 5fH      ; 1024x768 16 color TVGA mode
        jnb     isgraphic
endm
gmode_code macro
        mov     cs:gmode_flag,0         ; assume character mode (zero flag)
        cmp     al, 4
        jb      not_graphics            ; modes >=4 are assumed to be graphic
        cmp     al, 050H
        jb      is_graphics
        cmp     al, 5Bh
        jb      not_graphics
is_graphics:
	mov     cs:gmode_flag,al        ; non-zero value
not_graphics:
endm
ENDIF

IF MAGICVGA
; Contributed by:



;In-Real-Life: Andrew A. Chernov  |  Domain: ache@hq.demos.su,
;Zodiac-Sign:  Virgo              |          ache%hq.demos.su@relay.eu.net
;Organization: DEMOS Coop.,       |  Phone:  +7 095 2312129
;              Moscow, Russia     |  Fax:    +7 095 2335016

card_id	macro
	db	'Magic VGA'
endm
gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
	cmp	cs:video_mode, 63h	; 720x540, 16 color
	je	isgraphic
	cmp	cs:video_mode, 64h	; 800x600, 16 color
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes =>4 are assumed to be graphic
	cmp	al, 40h 		; modes 40-43 are text!
	je	not_graphics
	cmp	al, 41h
	je	not_graphics
	cmp	al, 42h
	je	not_graphics
	cmp	al, 43h
	je	not_graphics
	cmp	al, 50h 		; modes 50-53 are text!
	je	not_graphics
	cmp	al, 51h
	je	not_graphics
	cmp	al, 52h
	je	not_graphics
	cmp	al, 53h
	je	not_graphics
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF
IF	CHIPS
; From Arend van den Brug
card_id	macro
	db	'Chips SVGA'
endm

gmode_test macro isgraphic
	cmp	cs:video_mode, 10h	; 640x350, 16 color mode
	je	isgraphic
	cmp	cs:video_mode, 12h	; 640x480, 16 color VGA mode
	je	isgraphic
	cmp	cs:video_mode, 6Ah	; 800x600, 16 color
	je	isgraphic
	cmp	cs:video_mode, 70h	; 800x600, 16 color
	je	isgraphic
endm
gmode_code macro
	mov	cs:gmode_flag,0		; assume character mode (zero flag)
	cmp	al, 4
	jb	not_graphics		; modes >=4 are assumed to be graphic
	cmp	al, 60h			; 60: 132x25 text 16 colors (char 8x14)
	jb	is_graphics		; 61: 132x50 text 16 colors (char 8x8)
	cmp	al, 62h			; 62: 132x43 text 16 colors (char 8x8)
	jbe	not_graphics
	cmp	al, 64h			; 80x43 text 16 colors (char 9x8)
	je	not_graphics
	cmp	al, 65h			; 80x50 text 16 colors (char 9x8)
	je	not_graphics
is_graphics:
	mov	cs:gmode_flag,al	; non-zero value
not_graphics:
endm
ENDIF

